"""
例282 字符串压缩
1．问题描述
设计一种方法，通过给重复字符计数来进行基本的字符串压缩。字
符串"aabcccccaaa"可压缩为"a2b1c5a3"。如果压缩后的字符数不小于原
始的字符数，则返回原始的字符串。假设字符串仅包括a~z的字母。
2．问题示例
输入str="aabcccccaaa"，输出"a2b1c5a3"。输入str="aabbcc"，输
出"aabbcc"。
"""


def compress_string(s):
    if not s:
        return ""

    result = []
    count = 1
    prev_char = s[0]
    for char in s[1:]:
        if char == prev_char:
            count += 1
        else:
            result.append(prev_char + str(count))
            prev_char = char
            count = 1

    # 添加最后一个字符及其计数
    result.append(prev_char + str(count))

    # 检查压缩后的字符串长度是否小于等于原始字符串
    result_str = "".join(result)        # 将列表转换为字符串
    if len(result_str) < len(s):
        return "".join(result)
    return s

# 示例用法
input_str1 = "aabcccccaaa"
output_str1 = compress_string(input_str1)
print(output_str1)  # 输出 "a2b1c5a3"

input_str2 = "aabbcc"
output_str2 = compress_string(input_str2)
print(output_str2)  # 输出 "aabbcc"
